/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.controlador;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.common.IObserver;
import pe.com.cotelasa.scp.common.ISubject;
import pe.com.cotelasa.scp.controlador.backingBean.BKDetalleBC;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.Articulo;
import pe.com.cotelasa.scp.entidad.DetalleCompraFacturacion;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKSession;

/**
 *
 * @author WINDOWS 7
 */
@SuppressWarnings("serial")
@Named(value = "MBDetalleBC")
@Scope("request")
public class MBDetalleBC extends MBGenerico implements ISubject, Serializable{
    private static Logger logger = Logger.getLogger(MBDetalleBC.class);
    @Inject
    private BKDetalleBC bkDetalle;
    @Autowired
    BKSession session;
    
    @Override
    public void addObserver(IObserver observador) {
        bkDetalle.addObservers(observador);
    }
    
    
    public void inciarDetalleBoleta(ActionEvent actionEvent) {
        System.out.println("entroooo al detalle");
        bkDetalle.inicializar();
        Collection<Articulo> articulosElegir = (Collection<Articulo>) actionEvent.getComponent().getAttributes().get("listaArt");
        Collection<DetalleCompraFacturacion> detallesBoleta = (Collection<DetalleCompraFacturacion>) actionEvent.getComponent().getAttributes().get("listaDet");
        System.out.println("lista de detalles: "+detallesBoleta);
        
        System.out.println("lista de articulos: "+articulosElegir);
        for(DetalleCompraFacturacion detalle:detallesBoleta){
            Iterator itr = articulosElegir.iterator();
            while (itr.hasNext()) {
                Articulo art = (Articulo) itr.next();
                if(art.getId().equals(detalle.getIdArticulo().getId())){
                    itr.remove();
                    break;
                }
            }
        }
        bkDetalle.getListaArticulo().addAll(articulosElegir);
    }
    
    public void agregarDetalleBoleta(){
        bkDetalle.getDetalleFormulario().setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
        bkDetalle.getDetalleFormulario().setUsrCreacion(session.getUsuario().getUsuario());
        bkDetalle.getDetalleFormulario().setFecCreacion(new Date());
        bkDetalle.getDetalleFormulario().setPrecioTotal(bkDetalle.getDetalleFormulario().getPrecioUnitario().multiply(bkDetalle.getDetalleFormulario().getCantidad()));
        notificarObservadores();
    }
    

    @Override
    public void notificarObservadores() {
        try {
            bkDetalle.getObservers().get(bkDetalle.getObservers().size() - 1).actualizarObservador(bkDetalle.getDetalleFormulario());
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }
    }
    
}
